草庐IT

c++ - std::iterator、指针和 VC++ 警告 C4996

全部标签

c++ - 如何将 IStream 实例中的数据读入 char 指针?

我试图从我的IStream实例中复制一些二进制数据(因为Gdiplus::Image只保存到IStream派生对象或文件路径)到一个字符指针,我可以通过知道分配的二进制文件从中简单地读取大小并可以访问指针。我的类如下:Upload::Upload(Gdiplus::Bitmap*bitmap,CLSIDclsEncoderId){intresult;STATSTGstatResult;result=CreateStreamOnHGlobal(0,TRUE,&m_hBufferStream);if(result!=S_OK)MessageBoxW(NULL,_T("Upload::Upl

c++ - 如果 EBP 帧指针为 NULL,堆栈是否已损坏?

我对堆栈跟踪的理解基本上是基于Whatisexactlythebasepointerandstackpointer?Towhatdotheypoint?.多年来我一直在帮助开发的一个程序在崩溃时会吐出一个堆栈转储,我已经习惯于根据C++编译器生成的.map文件来评估这些堆栈跟踪。很多次,我都成功地遍历了堆栈并调试了问题。但是,有时堆栈跟踪有一个NULLEBP(帧)指针。以下是此类示例堆栈转储中的相关片段:InitialEBPpointervalue:04d8fab0{ataddress04d8fab0:00000000}可以看到,EBP帧指针的值为NULL。因此,我不能走堆栈。这是堆栈

c++ - 非分页内存指针

我声明了2个结构:structirp_list{IRP*irp;LIST_ENTRYlh;};和structdev_info{...LIST_ENTRYlh;...};我在DriverWrite函数(IRP_MJ_WRITE)中做:structirp_list*il;structdev_info*di=(structdev_info*)device->DeviceExtension;if(!(il=ExAllocatePool(NonPagedPool,sizeof(*il)))){ret=STATUS_NO_MEMORY;DbgPrint("[uart]UartWritecan'th

c++ - std::stringstream 类需要有 dll 接口(interface)

我在dll中有一个C++类。在那个类中,我想将来自Curl回调的数据存储到一个成员变量中。我打算像这样使用字符串流:voidMyClass::CurlCallback(void*pvData,size_ttSize){constchar*data=static_cast(pvData);m_myStringStream但是当像这样在我的类中声明字符串流时:private:std::stringstreamm_myStringStream;我收到以下错误:Error1errorC2220:warningtreatedaserror-no'object'filegeneratedWarni

c++ - Windows 8.x 附带什么 VC++ 可再发行组件(如果有)?

我对使用Windows8.1Enterprise(64位)得到的结果感到困惑。我正在寻找32位版本的VC++2012redist并遵循以下答案:DetectifVisualC++RedistributableforVisualStudio2012isinstalled我发现VC++2012不在程序列表中(控制面板/程序又名卸载软件)没有HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\Runt‌imeMinimum还有库“%windir%\SysWOW64\msvcr110.dl”现在我

c++ - 确保 Windows 正确初始化指向导入函数的函数指针所需的条件是什么?

导入库的实现方式——在here中有描述。—令我感到惊讶的是,指向导入函数的函数指针从未被初始化。据说——来自ahighlyacclaimedarticle—这些函数指针以某种方式被视为IAT中的一个条目,以便Windows及时适本地初始化它们。这些看起来像普通函数指针的函数指针有什么特别之处,使得编译器将它们视为IAT中的一个条目? 最佳答案 C++编译器可以通过两种方式实现在C++代码中声明的函数指针,这些函数指针使用指向导入函数的指针进行初始化。对于C++编译器,最简单的方法是用导入库中stub函数的地址初始化指针。或者,它可以

c++ - VBA 64 位 Excel 不将指针传递给 DLL 函数 (C++)

我有一个在Excel64位上运行的VBA程序调用一些DLL函数(C++)。问题是(显然)它不能将指针传递给C++程序。该程序适用于Excel32位。操作系统是Windows8。对于Windows7,32位和64位版本的Excel都运行良好。C++:doubletest(long*v,longi){if(v==NULL)return-88;elsereturn*((long*)v);}VBA:PrivateDeclarePtrSafeFunctionhamid_testLib"...\CVode.dll"(ByValvAsLongPtr,ByValiAsLong)AsDoubleDimx

c++ - init_seg和库代码中的警告C4073?

我们有一个C++库。它具有四个对初始化顺序敏感的静态对象(其中两个是标准库中的字符串)。我们正在使用init_seg(lib)来控制库中C++静态对象的初始化顺序。正在使用它的源文件被编译并在动态链接库或静态库中使用。根据init_seg的文档:...Itisparticularlyimportanttousetheinit_segpragmaindynamic-linklibraries(DLLs)orlibrariesrequiringinitialization.(emphasismine)VisualStudio解决方案分为四个项目。一种是静态库,或者是动态库,一种是静态库的测

c++ - Clion 的 "Call to std::pair is ambiguous"但可以编译代码

我有一个函数可以在这种状态下编译,但给出“配对调用不明确”,但仅在ClionIDE中,编译没有问题,如果我添加任何随机的东西,警告就会消失,即使它最终导致编译器错误。std::pair>Config::foo(conststd::string&sec,conststd::string&key)const{returnstd::pair>(hasSection(sec)?(hasKey(sec,key)?Status::Success:Status::MissingKey):Status::MissingSec,hasKey(sec,key)?config_map.find(sec)->

windows - 用本地配置文件替换 Microsoft.VC90.CRT WinSxS 策略文件

在WindowsXP上,我有一个以msvcp90.dll运行的.exe,msvcr90.dll,和Microsoft.VC90.CRT.manifest在我的本地应用程序目录中。我在C:\WINDOWS\WinSxS\Policies中也有这些.dll的策略文件,由VisualC++2008SP1RedistributablePackage安装.我想删除此策略文件并改用本地目录中的应用程序配置文件。策略文件是:我的配置文件是:DependencyWalker在使用配置文件而不是策略文件时同时报告错误-有什么问题吗?另外,配置文件应该命名为.exe.config吗?,或Microsoft